﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace 微信公众平台测试
{
    /// <summary>
    /// wx 的摘要说明
    /// </summary>
    public class wx : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";

            if (context.Request.HttpMethod.ToLower().Equals("get"))
            {
                ValidateUrl();
            }
            else
            {
                context.Response.Write("wgx:post");
            }
          context.Response.Write("Hello World");
        }
        public void ValidateUrl()
        {
            /* signature    微信加密签名，signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
                timestamp    时间戳
                nonce    随机数
                echostr    随机字符串
            */
            //接收请求过来的参数
            HttpContext context = HttpContext.Current;
            string signature = context.Request["signature"];
            string timestamp = context.Request["timestamp"];
            string nonce = context.Request["nonce"];

            string echostr = context.Request["echostr"];

            string token = "weixinduang";
            string[] temp1 = { token, timestamp, nonce };
            //1.字典序排序
            Array.Sort(temp1);
            //2.将3个参数字符串拼接成一个字符串后进行sha1加密
            string str = string.Join("", temp1);
            string strResult = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "SHA1");
            //3.开发者获得加密后的字符串可与signature对比，标识该请求来源于微信
            if (strResult.ToLower().Equals(signature))
            {
                context.Response.Write(echostr);
            }
        } 
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}